﻿using System;
using System.Collections;
using System.Linq;
using System.Web;

namespace Tibet.Logica
{
    /// <summary>
    /// En esta clase se almacenaran los reportes que la persona desea imprimir o exportar.
    /// </summary>
    public class ListaReportes
    {
         
  
        /// <summary>
        /// Lista en la que se almacenará los reportes que se estan mostrando en ese momento.
        /// </summary>
        private ArrayList _ListaMostrados;

        /// <summary>
        /// Lista en la que se almacenarán los reportes que el usuario agregue, para luego exportarlos o mostrarlos.
        /// </summary>
        private ArrayList _ListaAgregados;

        /// <summary>
        /// Atributo que guarda el id del usuario
        /// </summary>
        private int _IdUsuario;

        public int IdUsuario
        {
            get { return _IdUsuario; }
            set { _IdUsuario = value; }
        }

        /// <summary>
        /// Lista personal de reportes, contiene los reportes que el usuario seleccionó para ser exportados
        /// </summary>
        public ArrayList ListaAgregados
        {
            get { return _ListaAgregados; }
        }

        /// <summary>
        /// Lista de reportes que se muestran en la ventana actual.
        /// </summary>
        public ArrayList ListaMostrados
        {
            get { return _ListaMostrados; }
        }

        /// <summary>
        /// Este metododo se utiliza para agregar nuevos reportes a la lista de reportes a mostrar.
        /// </summary>
        /// <param name="nuevo">El reporte a agregar</param>
        public bool agregarMostrados(Reporte nuevo)
        {
            try
            {
                ListaMostrados.Add(nuevo);
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        /// <summary>
        /// Este metododo se utiliza para agregar nuevos reportes a la lista del usuario
        /// </summary>
        /// <param name="nuevo">El reporte a agregar</param>
        /// <returns></returns>
        public bool agregarLista(Reporte nuevo)
        {
            try
            {
                ListaAgregados.Add(nuevo);
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }


        /// <summary>
        /// Metodo que remueve todos los elementos de la lista de la lista de reportes mostrados,
        /// usualmente se usará al momento de cambiar de ventana.
        /// </summary>
        /// <returns></returns>
        public bool destruirMostrados()
        {
            try
            {
                ListaMostrados.Clear();
                return true;
            }
            catch
            {
                return false;
            }

        }


        /// <summary>
        /// Constructor privado, para cumplir con el sigleton
        /// </summary>
        public ListaReportes()
        {
            //Instanciamos las listas.
            this._ListaAgregados = new ArrayList();
            this._ListaMostrados = new ArrayList();
        }
     
    }
}
